package com.kk.xhr.model.service;

import com.kk.xhr.common.pojo.BinaryEnum;
import com.kk.xhr.model.dto.DepartmentDTO;
import com.kk.xhr.model.dto.DepartmentTreeDTO;

import java.util.Collection;
import java.util.List;
import java.util.Optional;

/**
 * 部门服务接口
 *
 * @author kkmystery
 * @version 1.0 2021/3/4
 * @since 1.0.0
 */
public interface IDepartmentService {
    /**
     * 根据主键id查询部门树结构
     *
     * @param id 主键id
     * @return DepartmentTreeDTO
     */
    DepartmentTreeDTO query(Long id);

    /**
     * 根据id查询部门
     *
     * @param id 主键id
     * @return DepartmentDTO
     */
    Optional<DepartmentDTO> queryById(Long id);

    /**
     * 添加部门
     *
     * @param dto DepartmentDTO
     * @return 主键id
     */
    long add(DepartmentDTO dto);

    /**
     * 修改部门
     *
     * @param dto DepartmentDTO
     * @return 是否成功
     */
    boolean modify(DepartmentDTO dto);

    /**
     * 修改部门状态
     *
     * @param ids     主键id列表
     * @param status 状态
     * @return 是否成功
     */
    boolean modifyStatus(Collection<Long> ids, BinaryEnum status);

    boolean checkByUserId(Long userId);

    List<Long> queryByUserId(Long userId);
}
